#ifndef IRMM_RANDVECTOR_H
#define IRMM_RANDVECTOR_H

#include "Matrix.h"
#include "Vector.h"
#include "mcRand.h"

class irmm_RandVector
{
public:
	// construction & destruction
	irmm_RandVector();
	~irmm_RandVector();

	virtual void Set(mcmcVector<double> &mean, mcmcMatrix<double> &sigma);
	virtual mcmcVector<double> Sampling(void);
	virtual void Diffuse(mcmcVector<double> &mx_value);
	virtual double	GetPdf(mcmcVector<double> &mx_value);
	mcmcMatrix<double>	GetVar(void){return mx_sigma;};

private:
	mcmcMatrix<double>	mx_sigma;				// covariance matrix
	mcmcVector<double>	mx_mean;				// vector mean
	mcmcMatrix<double>	mx_eigen_value;			// eigen values of the covariance matrix
	mcmcMatrix<double>	mx_eigen_vector;		// eigen vector of the covariance matrix
	RF_uniform		*rf;
};
#endif
